package dragon.core.runtime;

import java.lang.reflect.Field;

public class Object2String {

	static String _n = "\n";

	static String _t = "\t";

	static String _blank = "&nbsp;&nbsp;";

	static String _br = "<br/>";

	public static String toString(Class<?> cs) {

		Field[] fields = cs.getDeclaredFields();

		StringBuilder sb = new StringBuilder();
		sb.append(_t).append("@Override").append(_n);
		sb.append(_t).append("public String toString() {").append(_n);
		sb.append(_t).append(_t).append("StringBuilder str = new StringBuilder();").append(_n);
		sb.append(_t).append(_t).append("str.append(\"").append(cs.getCanonicalName()).append(":\").append(\"\\n\"").append(");").append(_n);
		for (Field field : fields) {
			sb.append(_t).append(_t).append("str.append(\"").append(field.getName()).append("=\").append(").append(field.getName()).append(").append(\"\\t\");").append(_n);
		}
		sb.append(_t).append(_t).append("str.append(\"\\n\");").append(_n);
		sb.append(_t).append(_t).append("return str.toString();").append(_n);
		sb.append(_t).append("}").append(_n).append(_n);
		return sb.toString();
	}

	public static String toHtmlString(Class<?> cs) {

		Field[] fields = cs.getDeclaredFields();

		StringBuilder sb = new StringBuilder();
		sb.append(_t).append("public String toHtmlString() {").append(_n);
		sb.append(_t).append(_t).append("StringBuilder str = new StringBuilder();").append(_n);
		sb.append(_t).append(_t).append("str.append(\"").append(cs.getCanonicalName()).append(":\").append(\"").append(_br).append("\");").append(_n);
		for (Field field : fields) {
			sb.append(_t).append(_t).append("str.append(\"").append(field.getName()).append("=\").append(").append(field.getName()).append(").append(\"").append(_blank).append("\");").append(_n);
		}
		sb.append(_t).append(_t).append("str.append(\"").append(_br).append("\");").append(_n);
		sb.append(_t).append(_t).append("return str.toString();").append(_n);
		sb.append(_t).append("}").append(_n).append(_n);
		return sb.toString();
	}

}
